package com.剑指offer.第三章;

/**
 * 给定一个字符串，请问该字符串中有多少个回文连续字符串？
 * 例如：字符串"abc" 有3个回文字符串，分别为"a","b"和"c"。
 * 而字符串"aaa" 有6个回文字符串，分别为"a","a","a","aa","aa"和"aaa"
 */
public class 回文字符串的个数 {

    public static int resolve(String s) {
        if (s.length() == 0) {
            return 0;
        }

        char[] chars = s.toCharArray();
        int count = 0;
        // 双指针
        // 使用每一位的当前的字符的位置 向两边扩展
        // start end start >=0 end<s.length()
        // 可以两个是字符扩展 也可以一个 (奇偶)
        for (int i = 0; i < chars.length; i++) {
            count += count(s, i, i);
            count += count(s, i, i + 1);
        }
        return count;
    }

    public static int count(String s, int start, int end) {
        int count = 0;
        while (start >= 0 && end < s.length() && s.charAt(start) == s.charAt(end)) {
            count++;
            start--;
            end++;
        }
        return count;
    }

    public static void main(String[] args) {
        System.out.println(resolve("aca"));
    }

}
